import { createApp } from "vue";
import router from "./router";
import App from "./App.vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
import "./assets/main.css";
// import * as echarts from 'echarts';

import axios from "axios";

// 引入three.js
import * as THREE from "three";

// axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';

// //设置允许跨域的域名，*代表允许任意域名跨域
// axios.defaults.headers.common["Access-Control-Allow-Origin"] = "*";
// //  例如 允许百度跨域， 把上面这行的*替换为 https://baidu.com
// //允许的header类型
// axios.defaults.headers.common["Access-Control-Allow-Headers"] = "content-type";
// //跨域允许的请求方式
// axios.defaults.headers.common["Access-Control-Allow-Methods"] = "DELETE,PUT,POST,GET,OPTIONS";

// axios.interceptors.response.use(data => {
//     console.log(data)
//     // axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';
//     return data;
// })

const app = createApp(App);
//注册图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}

// respone拦截器
axios.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    if (error && error.response) {
      switch (error.response.status) {
        case 400:
          error.message = "错误请求";
          break;
        case 401:
          error.message = "未授权，请重新登录";
          break;
        case 403:
          error.message = "拒绝访问";
          break;
        case 404:
          error.message = "请求错误,未找到该资源";
          break;
        case 405:
          error.message = "请求方法未允许";
          break;
        case 408:
          error.message = "请求超时";
          break;
        case 500:
          error.message = "服务器端出错";
          break;
        case 501:
          error.message = "网络未实现";
          break;
        case 502:
          error.message = "网络错误";
          break;
        case 503:
          error.message = "服务不可用";
          break;
        case 504:
          error.message = "网络超时";
          break;
        case 505:
          error.message = "http版本不支持该请求";
          break;
        default:
          error.message = `未知错误${error.response.status}`;
      }
    } else {
      error.message = "连接到服务器失败";
    }
    return Promise.reject(error);
  }
);

app.config.globalProperties.$axios = axios;
// app.config.globalProperties.$echarts = echarts;

app.use(ElementPlus).use(router).mount("#app");
